Skip to content

Add RateLimit effect for rate-based access control#1620

Open
Copilot wants to merge 5 commits intomasterfrom
copilot/add-rate-limiting-effect
Open

Add RateLimit effect for rate-based access control#1620
Copilot wants to merge 5 commits intomasterfrom
copilot/add-rate-limiting-effect

Conversation

Copy link
Contributor

Copilot AI commented Dec 23, 2025

Extends Casbin's effect system beyond binary allow/deny to support rate-limited access control.

Changes

  • New effect type: Added RateLimit effect constant to effector.Effect enum
  • Effect parsing: Recognizes "rate_limit" string in policy definitions (alongside existing "allow" and "deny")
  • Effect evaluation: Updated DefaultEffector.MergeEffects() to handle RateLimit in all effect modes with priority order: Allow > RateLimit > Deny
  • Enforcement: RateLimit evaluates to true (allowed access), semantic distinction enables downstream rate limiting implementation

Usage

// Model configuration
[policy_definition]
p = sub, obj, act, eft

[policy_effect]
e = some(where (p.eft == allow)) && !some(where (p.eft == deny))

// Policy rules
p, alice, data1, read, allow
p, bob, data2, write, rate_limit  // New: rate-limited access
p, charlie, data3, read, deny

// Enforcement
e.Enforce("bob", "data2", "write")  // Returns true with rate_limit semantics

Priority semantics in DenyOverrideEffect mode: deny rules short-circuit, otherwise allow rules take precedence over rate_limit rules, which take precedence over no-match fallback.

Original prompt

This section details on the original issue you should resolve

<issue_title>[feature] add a new Effect to support rate limiting</issue_title>
<issue_description>need to add a new Effect to support rate limiting, so it's not only true or false now. it's allow (true) by rate</issue_description>

Comments on the Issue (you are @copilot in this section)


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

@CLAassistant
Copy link

CLAassistant commented Dec 23, 2025

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@hsluoyz hsluoyz marked this pull request as ready for review December 23, 2025 01:58
@github-actions
Copy link

github-actions bot commented Dec 23, 2025

Benchmark Comparison

Comparing base branch (b3f4490)
vs PR branch (5a456aa)

goos: linux
goarch: amd64
pkg: github.com/casbin/casbin/v3
cpu: Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
                                                 │ base-bench.txt │             pr-bench.txt             │
                                                 │     sec/op     │    sec/op     vs base                │
CachedRaw-4                                          14.24n ± ∞ ¹   14.18n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedBasicModel-4                                   176.0n ± ∞ ¹   180.9n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModel-4                                    177.2n ± ∞ ¹   178.8n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelSmall-4                               191.3n ± ∞ ¹   183.6n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelMedium-4                              202.2n ± ∞ ¹   193.8n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelLarge-4                               173.6n ± ∞ ¹   161.6n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelWithResourceRoles-4                   179.9n ± ∞ ¹   176.7n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelWithDomains-4                         190.9n ± ∞ ¹   189.1n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedABACModel-4                                    2.848µ ± ∞ ¹   2.848µ ± ∞ ¹       ~ (p=1.000 n=1) ³
CachedKeyMatchModel-4                                194.1n ± ∞ ¹   200.5n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelWithDeny-4                            177.0n ± ∞ ¹   180.9n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedPriorityModel-4                                179.8n ± ∞ ¹   176.9n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedWithEnforceContext-4                           311.0n ± ∞ ¹   320.1n ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelMediumParallel-4                      218.4n ± ∞ ¹   214.4n ± ∞ ¹       ~ (p=1.000 n=1) ²
HasPolicySmall-4                                     569.8n ± ∞ ¹   516.1n ± ∞ ¹       ~ (p=1.000 n=1) ²
HasPolicyMedium-4                                    577.5n ± ∞ ¹   594.8n ± ∞ ¹       ~ (p=1.000 n=1) ²
HasPolicyLarge-4                                     626.8n ± ∞ ¹   614.0n ± ∞ ¹       ~ (p=1.000 n=1) ²
AddPolicySmall-4                                     557.1n ± ∞ ¹   562.2n ± ∞ ¹       ~ (p=1.000 n=1) ²
AddPolicyMedium-4                                    744.5n ± ∞ ¹   768.1n ± ∞ ¹       ~ (p=1.000 n=1) ²
AddPolicyLarge-4                                     1.342µ ± ∞ ¹   1.275µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RemovePolicySmall-4                                  551.8n ± ∞ ¹   557.6n ± ∞ ¹       ~ (p=1.000 n=1) ²
RemovePolicyMedium-4                                 583.6n ± ∞ ¹   596.6n ± ∞ ¹       ~ (p=1.000 n=1) ²
RemovePolicyLarge-4                                  661.6n ± ∞ ¹   613.9n ± ∞ ¹       ~ (p=1.000 n=1) ²
Raw-4                                                14.15n ± ∞ ¹   14.17n ± ∞ ¹       ~ (p=1.000 n=1) ²
BasicModel-4                                         3.558µ ± ∞ ¹   3.638µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModel-4                                          5.455µ ± ∞ ¹   5.475µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelSizes/small-4                               50.62µ ± ∞ ¹   50.10µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelSizes/medium-4                              553.5µ ± ∞ ¹   540.0µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelSizes/large-4                               6.352m ± ∞ ¹   6.074m ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelSmall-4                                     61.63µ ± ∞ ¹   60.10µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelMedium-4                                    602.4µ ± ∞ ¹   581.0µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelLarge-4                                     6.264m ± ∞ ¹   6.229m ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelWithResourceRoles-4                         5.133µ ± ∞ ¹   5.263µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelWithDomains-4                               5.009µ ± ∞ ¹   5.119µ ± ∞ ¹       ~ (p=1.000 n=1) ²
ABACModel-4                                          2.759µ ± ∞ ¹   2.805µ ± ∞ ¹       ~ (p=1.000 n=1) ²
ABACRuleModel-4                                      4.247m ± ∞ ¹   4.174m ± ∞ ¹       ~ (p=1.000 n=1) ²
KeyMatchModel-4                                      5.971µ ± ∞ ¹   6.092µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelWithDeny-4                                  6.873µ ± ∞ ¹   6.971µ ± ∞ ¹       ~ (p=1.000 n=1) ²
PriorityModel-4                                      4.131µ ± ∞ ¹   4.283µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelWithDomainPatternLarge-4                    13.65µ ± ∞ ¹   13.62µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RoleManagerSmall-4                                   73.32µ ± ∞ ¹   73.65µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RoleManagerMedium-4                                  759.3µ ± ∞ ¹   746.1µ ± ∞ ¹       ~ (p=1.000 n=1) ²
RoleManagerLarge-4                                   10.18m ± ∞ ¹   10.49m ± ∞ ¹       ~ (p=1.000 n=1) ²
BuildRoleLinksWithPatternLarge-4                     328.5m ± ∞ ¹   323.3m ± ∞ ¹       ~ (p=1.000 n=1) ²
BuildRoleLinksWithDomainPatternLarge-4               12.43m ± ∞ ¹   12.64m ± ∞ ¹       ~ (p=1.000 n=1) ²
BuildRoleLinksWithPatternAndDomainPatternLarge-4     333.9m ± ∞ ¹   330.3m ± ∞ ¹       ~ (p=1.000 n=1) ²
HasLinkWithPatternLarge-4                            1.123µ ± ∞ ¹   1.108µ ± ∞ ¹       ~ (p=1.000 n=1) ²
HasLinkWithDomainPatternLarge-4                      513.3n ± ∞ ¹   512.5n ± ∞ ¹       ~ (p=1.000 n=1) ²
HasLinkWithPatternAndDomainPatternLarge-4            1.135µ ± ∞ ¹   1.109µ ± ∞ ¹       ~ (p=1.000 n=1) ²
ConcurrentHasLinkWithMatching-4                      2.158µ ± ∞ ¹   2.103µ ± ∞ ¹       ~ (p=1.000 n=1) ²
geomean                                              5.601µ         5.567µ        -0.61%
¹ need >= 6 samples for confidence interval at level 0.95
² need >= 4 samples to detect a difference at alpha level 0.05
³ all samples are equal

                                                 │ base-bench.txt │             pr-bench.txt              │
                                                 │      B/op      │     B/op       vs base                │
CachedRaw-4                                           0.000 ± ∞ ¹     0.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedBasicModel-4                                    104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModel-4                                     104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelSmall-4                                104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelMedium-4                               104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelLarge-4                                96.00 ± ∞ ¹     96.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelWithResourceRoles-4                    104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelWithDomains-4                          120.0 ± ∞ ¹     120.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedABACModel-4                                   1.505Ki ± ∞ ¹   1.504Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
CachedKeyMatchModel-4                                 152.0 ± ∞ ¹     152.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelWithDeny-4                             104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedPriorityModel-4                                 104.0 ± ∞ ¹     104.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedWithEnforceContext-4                            240.0 ± ∞ ¹     240.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelMediumParallel-4                       105.0 ± ∞ ¹     105.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasPolicySmall-4                                      150.0 ± ∞ ¹     150.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasPolicyMedium-4                                     157.0 ± ∞ ¹     157.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasPolicyLarge-4                                      165.0 ± ∞ ¹     165.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
AddPolicySmall-4                                      152.0 ± ∞ ¹     152.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
AddPolicyMedium-4                                     170.0 ± ∞ ¹     170.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
AddPolicyLarge-4                                      450.0 ± ∞ ¹     451.0 ± ∞ ¹       ~ (p=1.000 n=1) ³
RemovePolicySmall-4                                   166.0 ± ∞ ¹     166.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
RemovePolicyMedium-4                                  174.0 ± ∞ ¹     173.0 ± ∞ ¹       ~ (p=1.000 n=1) ³
RemovePolicyLarge-4                                   181.0 ± ∞ ¹     181.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
Raw-4                                                 0.000 ± ∞ ¹     0.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
BasicModel-4                                        1.475Ki ± ∞ ¹   1.470Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModel-4                                         2.020Ki ± ∞ ¹   2.011Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelSizes/small-4                              19.72Ki ± ∞ ¹   19.73Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelSizes/medium-4                             187.2Ki ± ∞ ¹   187.3Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelSizes/large-4                              1.813Mi ± ∞ ¹   1.812Mi ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelSmall-4                                    19.91Ki ± ∞ ¹   19.77Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelMedium-4                                   190.0Ki ± ∞ ¹   190.1Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelLarge-4                                    1.844Mi ± ∞ ¹   1.844Mi ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelWithResourceRoles-4                        2.672Ki ± ∞ ¹   2.661Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelWithDomains-4                              1.789Ki ± ∞ ¹   1.781Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
ABACModel-4                                         1.502Ki ± ∞ ¹   1.495Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
ABACRuleModel-4                                     1.269Mi ± ∞ ¹   1.259Mi ± ∞ ¹       ~ (p=1.000 n=1) ³
KeyMatchModel-4                                     2.999Ki ± ∞ ¹   2.989Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelWithDeny-4                                 2.425Ki ± ∞ ¹   2.417Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
PriorityModel-4                                     1.726Ki ± ∞ ¹   1.720Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelWithDomainPatternLarge-4                   8.489Ki ± ∞ ¹   8.477Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RoleManagerSmall-4                                  11.67Ki ± ∞ ¹   11.67Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RoleManagerMedium-4                                 123.0Ki ± ∞ ¹   123.0Ki ± ∞ ¹       ~ (p=1.000 n=1) ³
RoleManagerLarge-4                                  1.287Mi ± ∞ ¹   1.287Mi ± ∞ ¹       ~ (p=1.000 n=1) ³
BuildRoleLinksWithPatternLarge-4                    86.05Mi ± ∞ ¹   85.68Mi ± ∞ ¹       ~ (p=1.000 n=1) ³
BuildRoleLinksWithDomainPatternLarge-4              4.492Mi ± ∞ ¹   4.482Mi ± ∞ ¹       ~ (p=1.000 n=1) ³
BuildRoleLinksWithPatternAndDomainPatternLarge-4    87.65Mi ± ∞ ¹   87.41Mi ± ∞ ¹       ~ (p=1.000 n=1) ³
HasLinkWithPatternLarge-4                             177.0 ± ∞ ¹     176.0 ± ∞ ¹       ~ (p=1.000 n=1) ³
HasLinkWithDomainPatternLarge-4                       80.00 ± ∞ ¹     80.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasLinkWithPatternAndDomainPatternLarge-4             177.0 ± ∞ ¹     177.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
ConcurrentHasLinkWithMatching-4                       622.0 ± ∞ ¹     622.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
geomean                                                         ⁴                  -0.13%               ⁴
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal
³ need >= 4 samples to detect a difference at alpha level 0.05
⁴ summaries must be >0 to compute geomean

                                                 │ base-bench.txt │             pr-bench.txt             │
                                                 │   allocs/op    │  allocs/op    vs base                │
CachedRaw-4                                           0.000 ± ∞ ¹    0.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedBasicModel-4                                    4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModel-4                                     4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelSmall-4                                4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelMedium-4                               4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelLarge-4                                3.000 ± ∞ ¹    3.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelWithResourceRoles-4                    4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelWithDomains-4                          4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedABACModel-4                                     18.00 ± ∞ ¹    18.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedKeyMatchModel-4                                 4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelWithDeny-4                             4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedPriorityModel-4                                 4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedWithEnforceContext-4                            5.000 ± ∞ ¹    5.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
CachedRBACModelMediumParallel-4                       4.000 ± ∞ ¹    4.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasPolicySmall-4                                      6.000 ± ∞ ¹    6.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasPolicyMedium-4                                     6.000 ± ∞ ¹    6.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasPolicyLarge-4                                      7.000 ± ∞ ¹    7.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
AddPolicySmall-4                                      6.000 ± ∞ ¹    6.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
AddPolicyMedium-4                                     7.000 ± ∞ ¹    7.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
AddPolicyLarge-4                                      9.000 ± ∞ ¹    9.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
RemovePolicySmall-4                                   7.000 ± ∞ ¹    7.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
RemovePolicyMedium-4                                  7.000 ± ∞ ¹    7.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
RemovePolicyLarge-4                                   8.000 ± ∞ ¹    8.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
Raw-4                                                 0.000 ± ∞ ¹    0.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
BasicModel-4                                          17.00 ± ∞ ¹    17.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModel-4                                           35.00 ± ∞ ¹    35.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelSizes/small-4                                480.0 ± ∞ ¹    480.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelSizes/medium-4                              4.829k ± ∞ ¹   4.829k ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelSizes/large-4                               48.20k ± ∞ ¹   48.17k ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelSmall-4                                      615.0 ± ∞ ¹    615.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelMedium-4                                    6.018k ± ∞ ¹   6.017k ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelLarge-4                                     60.32k ± ∞ ¹   60.31k ± ∞ ¹       ~ (p=1.000 n=1) ³
RBACModelWithResourceRoles-4                          28.00 ± ∞ ¹    28.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelWithDomains-4                                25.00 ± ∞ ¹    25.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
ABACModel-4                                           17.00 ± ∞ ¹    17.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
ABACRuleModel-4                                      40.09k ± ∞ ¹   40.09k ± ∞ ¹       ~ (p=1.000 n=1) ³
KeyMatchModel-4                                       37.00 ± ∞ ¹    37.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelWithDeny-4                                   49.00 ± ∞ ¹    49.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
PriorityModel-4                                       22.00 ± ∞ ¹    22.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
RBACModelWithDomainPatternLarge-4                     72.00 ± ∞ ¹    72.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
RoleManagerSmall-4                                    797.0 ± ∞ ¹    797.0 ± ∞ ¹       ~ (p=1.000 n=1) ²
RoleManagerMedium-4                                  8.741k ± ∞ ¹   8.741k ± ∞ ¹       ~ (p=1.000 n=1) ²
RoleManagerLarge-4                                   89.74k ± ∞ ¹   89.74k ± ∞ ¹       ~ (p=1.000 n=1) ²
BuildRoleLinksWithPatternLarge-4                     3.600M ± ∞ ¹   3.600M ± ∞ ¹       ~ (p=1.000 n=1) ³
BuildRoleLinksWithDomainPatternLarge-4               145.2k ± ∞ ¹   145.2k ± ∞ ¹       ~ (p=1.000 n=1) ³
BuildRoleLinksWithPatternAndDomainPatternLarge-4     3.679M ± ∞ ¹   3.679M ± ∞ ¹       ~ (p=1.000 n=1) ³
HasLinkWithPatternLarge-4                             13.00 ± ∞ ¹    13.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasLinkWithDomainPatternLarge-4                       5.000 ± ∞ ¹    5.000 ± ∞ ¹       ~ (p=1.000 n=1) ²
HasLinkWithPatternAndDomainPatternLarge-4             13.00 ± ∞ ¹    13.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
ConcurrentHasLinkWithMatching-4                       21.00 ± ∞ ¹    21.00 ± ∞ ¹       ~ (p=1.000 n=1) ²
geomean                                                         ⁴                 -0.00%               ⁴
¹ need >= 6 samples for confidence interval at level 0.95
² all samples are equal
³ need >= 4 samples to detect a difference at alpha level 0.05
⁴ summaries must be >0 to compute geomean

🤖 This comment will be automatically updated with the latest benchmark results.

Copilot AI and others added 4 commits December 23, 2025 02:05
Co-authored-by: hsluoyz <3787410+hsluoyz@users.noreply.github.com>
Co-authored-by: hsluoyz <3787410+hsluoyz@users.noreply.github.com>
Co-authored-by: hsluoyz <3787410+hsluoyz@users.noreply.github.com>
Co-authored-by: hsluoyz <3787410+hsluoyz@users.noreply.github.com>
Copilot AI changed the title [WIP] Add new Effect to support rate limiting Add RateLimit effect for rate-based access control Dec 23, 2025
Copilot AI requested a review from hsluoyz December 23, 2025 02:15
@hsluoyz hsluoyz force-pushed the master branch 3 times, most recently from c622095 to b190fce Compare January 6, 2026 07:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] add a new Effect to support rate limiting

3 participants